#include <iostream>
#include <string>
#include <vector>

bool isCyrillicUppercase(char c) {
    return 'А' <= c && c <= 'Я';
}

std::string analyzeWords(std::string inputStr) {
    std::vector<std::string> words;
    std::string word = "";
    for (char c : inputStr) {
        if (c == ' ') {
            if (!word.empty()) {
                words.push_back(word);
                word = "";
            }
        } else {
            word += c;
        }
    }
    if (!word.empty()) {
        words.push_back(word);
    }

    int numWords = words.size();
    int upperCyrillicCount = 0;
    int latinSymbolCount = 0;
    int shortWordsCount = 0;
    int hyphenCount = 0;

    std::string longestWord = words[0];
    int longestWordLength = words[0].length();

    for (const std::string& w : words) {
        if (isCyrillicUppercase(w[0])) {
            upperCyrillicCount++;
        }
        for (char c : w) {
            if (isalpha(c) && isascii(c)) {
                latinSymbolCount++;
                break;
            }
        }
        if (w.length() <= 3) {
            shortWordsCount++;
        }
        if (w.find('-') != std::string::npos) {
            hyphenCount++;
        }
        if (w.length() > longestWordLength) {
            longestWord = w;
            longestWordLength = w.length();
        }
    }

    return "Кол-во слов: " + std::to_string(numWords) + "\nКол-во слов с заглавной кириллической буквы: " + std::to_string(upperCyrillicCount) + "\nКол-во слов содержащих латинский символ: " + std::to_string(latinSymbolCount) + "\nКол-во слов не превышающих 3 символа: " + std::to_string(shortWordsCount) + "\nКол-во слов в составе которых имеется дефис: " + std::to_string(hyphenCount) + "\nСамое длинное слово: " + longestWord + "\nДлина слова: " + std::to_string(longestWordLength);
}

int main() {
    std::string inputStr;
    std::cout << "Введите несколько слов, разделенных пробелом: ";
    std::getline(std::cin, inputStr);

    std::string result = analyzeWords(inputStr);
    std::cout << result << std::endl;

    return 0;
}
